package com.utf999.qiangmanger.service.iface;

import java.util.LinkedHashMap;
import java.util.List;

import org.springframework.web.multipart.commons.CommonsMultipartFile;

import com.utf999.qiangmanger.entity.orm.CompanyEntity;
import com.utf999.qiangmanger.entity.orm.StorefrontEntity;
import com.utf999.qiangmanger.exception.BizException;
import com.utf999.qiangmanger.service.IQiangService;

public interface ICompanyService extends IQiangService {
	/**
	 * 查询当前系统中的公司信息。
	 * @param status 可以传入，表示只查询某种状态的公司信息
	 * @return 
	 */
	public List<CompanyEntity> queryCompanyList(Integer status) throws BizException;
	
	/**
	 * 查询当前用户对应的公司信息（注意超级管理员可能没有公司）
	 * @param userid 指定的用户编号信息
	 * @return
	 * @throws BizException
	 */
	public CompanyEntity queryCompany(String userid) throws BizException;
	
	/**
	 * 查询当前系统中“正常”的商户信息，和这个正常商户下的所有“正常”店面。<br>
	 * 一般这个方式将会在超级管理员查询 “公司-店面”列表时进行使用   
	 * @return 返回的信息将以公司嵌套店面列表的方式进行
	 */
	public LinkedHashMap<CompanyEntity, List<StorefrontEntity>> queryCompanyAndStoreList() throws BizException;
	
	/**
	 * 查询指定的用户所属的公司和商户信息<br>
	 * 一般这个方式将会在店面管理员查询 “公司-店面”列表时进行使用   
	 * @param userid
	 * @return 返回的信息将以公司嵌套店面列表的方式进行
	 */
	public LinkedHashMap<CompanyEntity, List<StorefrontEntity>> queryCompanyAndStoreList(String userid) throws BizException;
	
	/**
	 * 按照指定的后台管理用户的信息，查询其所属的公司信息
	 * @param adminuserid 指定的后台管理用户的编号
	 * @return 
	 * @throws BizException
	 */
	public CompanyEntity queryCompanyByuserid(String adminuserid) throws BizException;
	
	/**
	 * 这个方法进行公司基本信息的创建或者修改操作
	 * @param companyURLFile 可能上传的文件内容信息 
	 * @param uid 以这个uid确定是修改操作还是新增操作
	 * @param createTime 创建时间
	 * @param status 公司状态
	 * @param companyURL 公司的log的http完整访问路径
	 * @param companyName 公司名称
	 * @param industryType 行业类型
	 * @throws BizException
	 */
	public void saveCompany(CommonsMultipartFile companyURLFile , String uid , String createTime , String status , String companyURL , String companyName , String industryType) throws BizException;
}
